package com.warom.sdg.dao;

import com.warom.sdg.model.PlcDeviceEntity;

import java.util.List;

/**
 * PLC设备数据访问对象接口
 * 定义设备表的数据库操作方法
 */
public interface PlcDeviceDao {
    
    /**
     * 插入一个PLC设备
     * @param device PLC设备实体
     * @return 插入设备的ID
     */
    long insert(PlcDeviceEntity device);
    
    /**
     * 更新PLC设备信息
     * @param device PLC设备实体
     */
    void update(PlcDeviceEntity device);
    
    /**
     * 删除PLC设备
     * @param device PLC设备实体
     */
    void delete(PlcDeviceEntity device);
    
    /**
     * 获取所有PLC设备
     * @return PLC设备列表
     */
    List<PlcDeviceEntity> getAllDevices();
    
    /**
     * 根据ID获取PLC设备
     * @param deviceId 设备ID
     * @return PLC设备实体
     */
    PlcDeviceEntity getDeviceById(int deviceId);
    
    /**
     * 根据IP和端口获取PLC设备
     * @param deviceIp 设备IP
     * @param devicePort 设备端口
     * @return PLC设备实体
     */
    PlcDeviceEntity getDeviceByIpAndPort(String deviceIp, int devicePort);
    
    /**
     * 获取所有活跃的PLC设备
     * @return 活跃PLC设备列表
     */
    List<PlcDeviceEntity> getActiveDevices();
    
    /**
     * 根据IP地址获取PLC设备
     * @param deviceIp 设备IP
     * @return PLC设备实体
     */
    PlcDeviceEntity getDeviceByIp(String deviceIp);
    
    /**
     * 根据设备类型ID获取PLC设备列表
     * @param deviceTypeId 设备类型ID
     * @return 设备列表
     */
    List<PlcDeviceEntity> getDevicesByTypeId(int deviceTypeId);
    
    /**
     * 删除所有设备
     */
    void deleteAll();

    /**
     * 根据ID列表获取PLC设备列表
     * @param deviceIds 设备ID列表
     * @return PLC设备列表
     */
//    List<PlcDeviceEntity> getDevicesByIds(List<Long> deviceIds);
} 